package sistema.submissao;

import org.apache.commons.chain.Chain;
import org.apache.commons.chain.Context;
import org.apache.commons.chain.impl.ContextBase;

import sistema.contexto.linguagem.LinguagemIF;
import sistema.contexto.problemas.ProblemaIF;
import sistema.contexto.regras.Result;

/**
 * 
 * @author Thiago Emmanuel Pereira da Cunha Silva, thiago.manel@gmail.com
 * @since 07/05/2006
 */
public class SubmissaoHandler {
	
	/**
	 *	TODO: Colocar o path e o problema no context  ?
	 * @param problema
	 * @param linguagem
	 * @param pathSource
	 * @param submissaoChain
	 */
	public Result execute(ProblemaIF problema, LinguagemIF linguagem, String pathSource, Chain submissaoChain){
		/**Collector parameter**/
		Result result = new Result();
		Context contexto = new ContextBase();
		contexto.put("problema", problema);
		contexto.put("pathSource", pathSource);
		contexto.put("linguagem", linguagem);
		contexto.put("result", result);
		
		try {
			submissaoChain.execute(contexto);
		} catch (Exception e) {
			//e.printStackTrace();
			return new Result(e.getMessage());
		}
		
		return result;
	}
}